package hibernate;

import java.util.Calendar;
import java.util.List;
import beans.*;
import hibernateDAOS.*;


public class Facade {

	private static Facade instancia;
	private CartaDAO cartaDAO;
	private ComandaDAO comandaDAO;
	private ComisionDAO comisionDAO;
	private FacturaDAO facturaDAO;
	private MedioPagoDAO medioPagoDAO;
	private MesaDAO mesaCompuestaDAO;
	private MozoDAO mozoDAO;
	private MovimientoDAO movimientoDAO;
	private OrdenCompraDAO ordenCompraDAO;
	private PlatoDAO platoDAO;
	private ProductoDAO productoDAO;
	private ProveedorDAO proveedorDAO;
	private RecetaDAO recetaDAO;
	private RubroDAO rubroDAO;
	private SectorDAO sectorDAO;
	private StockProductoDAO stockProductoDAO;
	
	
	private Facade(){
		cartaDAO = cartaDAO.getInstancia();
		comandaDAO = comandaDAO.getInstancia();
		comisionDAO = comisionDAO.getInstancia();
		facturaDAO = facturaDAO.getInstancia();
		medioPagoDAO = medioPagoDAO.getInstancia();
		mesaCompuestaDAO = mesaCompuestaDAO.getInstancia();
		mozoDAO = mozoDAO.getInstancia();
		mesaCompuestaDAO = mesaCompuestaDAO.getInstancia();
		movimientoDAO = movimientoDAO.getInstancia();
		ordenCompraDAO = ordenCompraDAO.getInstancia();
		platoDAO = platoDAO.getInstancia();
		productoDAO = productoDAO.getInstancia();
		proveedorDAO = proveedorDAO.getInstancia();
		recetaDAO = recetaDAO.getInstancia();
		rubroDAO = rubroDAO.getInstancia();
		sectorDAO = sectorDAO.getInstancia();
		stockProductoDAO = stockProductoDAO.getInstancia();
		
		
	}
	
	public static Facade obtenerInstancia(){
		if(instancia == null)
			instancia = new Facade();
		return instancia;
	}
	
	public void guardarProducto(Producto producto){
		productoDAO.guardarProducto(producto);
	}
	
	public Producto obtenerProducto(int idProducto){
		return productoDAO.obtenerProducto(idProducto);
	}
	
	public List<Producto> obtenerProductos(){
		return productoDAO.obtenerProductos();
	}
	
	public void eliminarProducto(Producto prod){
		productoDAO.eliminarProducto(prod);
	}
	
	public void guardarMovimiento ( Movimiento m )
	{
		movimientoDAO.guardarMovimiento(m);
	}
	
	public void eliminarMovimiento(Movimiento m){
		movimientoDAO.eliminarMovimiento(m);
	}
	
	public void modificarMovimiento(Movimiento m){
		movimientoDAO.modificarMovimiento(m);
	}

	public Proveedor obtenerProveXNombre( String nombProve )
	{
		return proveedorDAO.obtenerProveXNombre( nombProve );
	}

	public Producto obtenerProductoXNombre( String nombreProd )
	{
		return productoDAO.obtenerProductoXNombre( nombreProd );
	}
	
	public List<Proveedor> obtenerProveedores ()
	{
		return proveedorDAO.obtenerProveedores();
	}
	
}
